package com.macro.mall.wx.domain;

import org.apache.commons.lang3.StringUtils;

import java.util.UUID;

/**
 * 微信退款入参
 * 每个支付订单的部分退款次数不能超过50次
 * 交易时间超过一年的订单无法提交退款
 *
 */
public class WxRefundDTO {

    /**
     * 商户订单号
     *
     */
    private String out_trade_no;
    /**
     * 内部的退款单号格式:订单号+"-"+"子订单id"
     * 同一退款单号多次请求只退一笔。
     */
    private String out_refund_no;
    /**
     * 随机字符串，不长于32位
     *
     */
    private String nonce_str;
    /**
     * 子订单id
     */
    private String subOrderId;
    /**
     * 订单总金额 单位为分，只能为整数
     */
    private String total_fee;
    /**
     * 退款总金额 单位为分
     */
    private String refund_fee;

    public WxRefundDTO(String out_refund_no, String subOrderId) {
        if(StringUtils.isBlank(out_refund_no)){
            return;
        }
        if(subOrderId!=null){
            this.out_refund_no = new StringBuffer(out_refund_no).append("-").append(subOrderId).toString();
        }
        else {
            this.out_refund_no = out_refund_no;
        }
        this.nonce_str = UUID.randomUUID().toString().replaceAll("-","");
        this.out_trade_no = out_refund_no;
    }

    public String getNonce_str() {
        return nonce_str;
    }

    public void setNonce_str(String nonce_str) {
        this.nonce_str = nonce_str;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getOut_refund_no() {
        return out_refund_no;
    }

    public void setOut_refund_no(String out_refund_no) {
        this.out_refund_no = out_refund_no;
    }

    public String getSubOrderId() {
        return subOrderId;
    }

    public void setSubOrderId(String subOrderId) {
        this.subOrderId = subOrderId;
    }

    public String getTotal_fee() {
        return total_fee;
    }

    public void setTotal_fee(String total_fee) {
        this.total_fee = total_fee;
    }

    public String getRefund_fee() {
        return refund_fee;
    }

    public void setRefund_fee(String refund_fee) {
        this.refund_fee = refund_fee;
    }
}
